package com.roads.project.service;

import com.roads.project.domain.ProInstitution;
import com.roads.project.domain.bid.BidSelect;

import java.util.List;

/**
 * @ClassName IBidService
 * @Description 标段service接口
 * @Author nhp
 * @Date 2021/11/30 0030 14:54
 * @Version 1.0.0
 **/
public interface IBidService {

    /**
     * group分组下拉框 由项目和机构组成
     * 根据当前登录用户获取标段和分部
     * 如果标段共享清单则只显示标段
     * @param userName 当前登录用户
     * @param isAdmin 是否管理员
     * @return 标段按照项目分组select下拉框
     */
    List<BidSelect> selectProjectBidOrBranch(String userName, boolean isAdmin);

    /**
     * group分组下拉框 由项目和机构组成
     * 根据当前登录用户获取标段和分部 所有标段和分部
     * @param userName 当前登录用户
     * @param isAdmin 是否管理员
     * @return 标段按照项目分组select下拉框
     */
    List<BidSelect> selectProjectBidBranch(String userName, boolean isAdmin);

    /**
     * 普通下拉框
     * @param userName 当前登录用户
     * @param isAdmin 是否admin
     * @return 机构集合
     */
    List<ProInstitution> selectBid(String userName, boolean isAdmin);

    /**
     * group分组下拉框 由项目和机构组成
     * 根据当前登录用户获取标段 所有标段
     * @param userName 当前登录用户
     * @param isAdmin 是否管理员
     * @return 标段按照项目分组select下拉框
     */
    List<BidSelect> selectProjectBid(String userName, boolean isAdmin);

    /**
     * 普通下拉框 由机构组成
     * 根据当前登录用户获取所有机构（F,B类型机构）
     * @param userName 当前登录用户
     * @param isAdmin 是否管理员
     * @return 机构集合
     */
    List<ProInstitution> selectBidBranch(String userName, boolean isAdmin);

    /**
     * 根据项目ID获取所有机构
     *
     * @param search 查询条件
     * @return 机构集合
     */
    List<ProInstitution> selectBidByProjectId(ProInstitution search);

    /**
     * 根据项目ID获取所有标段和分部
     *
     * @param projectId 项目ID
     * @return 标段分部集合
     */
    List<ProInstitution> selectBidAndBranchByProjectId(Integer projectId);

    /**
     * 普通下拉框--汇总功能使用
     * 根据当前登录用户获取所有机构（F,B类型机构）
     * @param userName 当前登录用户
     * @return 机构集合
     */
    List<ProInstitution> selectSummaryBidBranch(String userName);

    /**
     * 监理标段group分组下拉框 由项目和机构组成
     * 根据当前登录用户获取监理标段
     * @param userName 当前登录用户
     * @param isAdmin 是否管理员
     * @param reportType 报表类型 3 是驻地、监理 4 是总监
     * @return 监理标段按照项目分组select下拉框
     */
    List<BidSelect> selectProjectSupervisorBid(String userName, boolean isAdmin, String reportType);

    /**
     * 监理普通下拉框--主要用于监理计量新增
     *
     * @param userName 当前登录用户
     * @return 机构集合
     */
    List<ProInstitution> selectSupervisorBid(String userName);

    /**
     * 代建普通下拉框--主要用于代建计量新增
     *
     * @param userName 当前登录用户
     * @return 机构集合
     */
    List<ProInstitution> selectAgencyBid(String userName);

    /**
     * 监理普通下拉框--主要用于监理汇总
     *
     * @param userName 当前登录用户
     * @return 机构集合
     */
    List<ProInstitution> selectSummarySupervisorBid(String userName);

    /**
     * 代建普通下拉框--主要用于代建汇总
     *
     * @param userName 当前登录用户
     * @return 机构集合
     */
    List<ProInstitution> selectSummaryAgencyBid(String userName);

}
